package com.rzcode.coinex.kernel.dao.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.rzcode.coinex.kernel.common.enums.DepositStateEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 存款记录实体类，用于记录用户存款交易的详细信息。
 */
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "deposit_record")
public class DepositRecord {

    /**
     * 存款记录ID，唯一标识一笔存款交易。
     */
    @ApiModelProperty(value = "存款记录ID", example = "8d7b6c4a-95e0-4f89-a5c2-f1b4e401364c")
    private String id;

    /**
     * 用户信息，关联到会员表，表示存款的用户。
     */
    @ApiModelProperty(value = "用户信息", hidden = true)
    private Member member;

    /**
     * 币种信息，关联到币种表，表示存款的币种。
     */
    @ApiModelProperty(value = "币种信息", hidden = true)
    private Coin coin;

    /**
     * 存款金额，表示用户存入的具体金额。
     */
    @ApiModelProperty(value = "存款金额", example = "100.00")
    private BigDecimal amount;

    /**
     * 动作，缴纳或索回，使用枚举类型表示存款的状态。
     */
    @ApiModelProperty(value = "动作，缴纳或索回", allowableValues = "0=DEPOSIT,1=WITHDRAWAL")
    private DepositStateEnum status;

    /**
     * 创建时间，记录存款记录创建的时间。
     */
    @ApiModelProperty(value = "创建时间", example = "2023-01-01 12:00:00")
    private LocalDateTime createdAt;
}

